package com.jt.www.model.vo.endorse;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.jt.www.model.vo.sdCheck.*;
import io.swagger.annotations.ApiModelProperty;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;


public class AppDetailProVo {

    /**
     * 订单号
     */
    @ApiModelProperty(value = "订单号")
    private String orderCode;

    /**
     * 订单金额
     */
    @ApiModelProperty(value = "订单金额")
    private String amout;

    /**
     * 订单创建时间
     */
    @ApiModelProperty(value = "订单创建时间")
    private String createDate;

    /**
     * 订单状态
     */
    @ApiModelProperty(value = "订单状态(待支付（01）/部分支付（02）/支付完成（03）/已完成（04）/已过期（05）/待核保（06）/核保失败（07）/支付失败（08）/已取消（09）/已删除（10）)")
    private String orderStatus;
    /**
     * 订单来源
     */
    @ApiModelProperty(value = "订单来源")
    private String source;

    /**
     * 投保单编号
     */
    @ApiModelProperty(value = "投保单编号")
    private String applicationFormCode;

    /**
     * 项目编码
     */
    @ApiModelProperty(value = "项目编码")
    private String projectCode;

    /**
     * 项目名称
     */
    @ApiModelProperty(value = "项目名称")
    private String projectName;

    /**
     * 产品编码
     */
    @ApiModelProperty(value = "用户编码")
    private String productCode;

    /**
     * 产品名称
     */
    @ApiModelProperty(value = "产品名称")
    private String productName;


    @ApiModelProperty(value = "被保人个数")
    private Integer insuredCount;

    /**
     * 出单方式：
     * 线上出单（01）、
     * 线下出单（00）
     * <p>
     * 根据产品配置来确定。
     */
    @ApiModelProperty(value = "出单方式（线上出单（01）/线下出单（00））")
    private String issueType;

    /**
     * 渠道代码
     */
    @ApiModelProperty(value = "渠道编码")
    private String channelCode;

    /**
     * 渠道名称
     */
    @ApiModelProperty(value = "渠道名称")
    private String channelName;

    /**
     * 出单机构编码
     * 江泰分公司层级
     */
    @ApiModelProperty(value = "江泰分公司编码")
    private String branchCode;

    /**
     * 机构名称
     */
    @ApiModelProperty(value = "江泰分公司名称")
    private String branchName;

    /**
     * 区分是新保还是续保标识，y-续保；n-新保
     */
    @ApiModelProperty(value = "是否续保（Y是/N否）")
    private String renewal;

    /**
     * 续保次数
     */
    @ApiModelProperty(value = "续保次数")
    private Integer renewTimes;

    /**
     * 续保保单号
     */
    @ApiModelProperty(value = "续保保单号")
    private String renewLastPolicyNo;

    /**
     * 投保开始日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "投保开始日期")
    private String applicantStartDate;

    /**
     * 投保终止日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "投保终止日期")
    private String applicantEndDate;

    /**
     * 起保日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "起保日期")
    private String startDate;

    /**
     * 保险止期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "保险止期")
    private String endDate;

    /**
     * 投保单状态
     * 待初审（00）
     * 初审不通过（01）
     * 待复审（02）
     * 复审不通过（03）
     * 延期凭证待上传（04）
     * 延期凭证待审核（05）
     * 延期拼装审核不通过（06）
     * 待关联（07）
     * 待出单（08）
     * 已出单（10）
     */
    @ApiModelProperty(value = "投保单状态（待初审（00）/初审不通过（01）/待复审（02）/复审不通过（03）/延期凭证待上传（04）/延期凭证待审核（05）/延期拼装审核不通过（06）/待关联（07）/待出单（08）/已出单（10）/已取消(11)/已删除(12)/投保单盖章审核不通过(13)）")
    private String applicationStatus;

    /**
     * 财务状态
     * 已到账（01）
     * 未到账（00）
     * 部分到账（02）
     */
    @ApiModelProperty(value = "财务状态（00未到账/01已到账/02部分到账）")
    private String financeStatus;

    /**
     * 出单标记
     * 末出单（n）
     * 已出单（y）
     */
    @ApiModelProperty(value = "出单状态（Y已出单/N未出单）")
    private String issueStatus;

    /**
     * 报文推送状态
     */
    @ApiModelProperty(value = "报文推送状态（00待推送/01成功/02失败/03异常）")
    private String pushStatus;

    /**
     * 保单类型
     * 电子保单（00）/纸质保单（01）
     */
    @ApiModelProperty(value = "保单类型（电子保单（00）/纸质保单（01））")
    private String policyKind;

    /**
     * 投保单保费金额
     */
    @ApiModelProperty(value = "投保单应付保费")
    private String prem;

    /**
     * 投保单优惠金额
     */
    @ApiModelProperty(value = "投保单优惠金额")
    private String reducePrem;

    /**
     * 优惠前保费
     */
    @ApiModelProperty(value = "投保单优惠前保费")
    private String beforePrem;

    /**
     * 优惠后保费
     */
    @ApiModelProperty(value = "投保单优惠后保费")
    private String afterPrem;

    /**
     * 支付时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "支付时间")
    private String payDate;

    /**
     * 实付保费
     */
    @ApiModelProperty(value = "投保单实付保费")
    private String actualPrem;

    /**
     * 省名称
     */
    @ApiModelProperty(value = "省名称")
    private String provinceName;

    /**
     * 城市名称
     */
    @ApiModelProperty(value = "城市名称")
    private String cityName;

    /**
     * 区县名称
     */
    @ApiModelProperty(value = "区县名称")
    private String countyName;

    /**
     * 支付方式 在线支付（00）、线下转账支付（01）、支付凭证（02）
     */
    @ApiModelProperty(value = "支付方式（在线支付（00）、线下转账支付（01）、支付凭证（02））")
    private String payType;

    /**
     * 投保单类型 自助投保（00）/代投保（01）
     */
    @ApiModelProperty(value = "投保单类型（自助投保（00）/代投保（01））")
    private String applicationType;

    /**
     * 投保单子渠道类型
     */
    @ApiModelProperty(value = "子渠道编码")
    private String channelType;

    /**
     * 赔付率
     */
    @ApiModelProperty(value = "赔付率")
    private String compensationRate;

    /**
     * 保单号
     */
    @ApiModelProperty(value = "保单号")
    private String policyNo;

    /**
     * 保单份数
     */
    @ApiModelProperty(value = "保单份数")
    private Integer quantity;

    /**
     * 保单状态
     */
    @ApiModelProperty(value = "保单状态（00生效/01终止/02失效）")
    private String policyStatus;

    /**
     * 保单服务人员信息
     */
    @ApiModelProperty(value = "保单服务人员信息")
    private List<PolicyAgentForProVO> agents = new ArrayList<>();

    /**
     * 投保人信息
     */
    @ApiModelProperty(value = "投保人信息")
    private HolderForProVO holder = new HolderForProVO();

    /**
     * 被保人信息
     */
    @ApiModelProperty(value = "被保人信息")
    private List<InsuredForProVO> insuredList = new ArrayList<>();

    /**
     * 险种信息
     */
    @ApiModelProperty(value = "险种信息")
    private List<Map<String, Object>> riskList = new ArrayList<>();

    /**
     * 保费计算公式
     */
    @ApiModelProperty(value = "保费计算公式")
    private String formulas;

    /**
     * 投保单附件集合
     */
    @ApiModelProperty(value = "投保单附件集合")
    private List<AttachmentForProVO> appAttachmentList = new ArrayList<AttachmentForProVO>(0);

    /**
     * 发票信息集合
     */
    @ApiModelProperty(value = "发票类型集合")
    private List<ApplicationFormInvoiceVo> ApplicationFormInvoiceVos = new ArrayList<>(0);

    /**
     * 保单附件集合
     */
    @ApiModelProperty(value = "保单附件集合")
    private List<PolAttachmentProVO> polAttachmentList = new ArrayList<PolAttachmentProVO>(0);

    /**
     * 投保单扩展集合
     */
    @ApiModelProperty(value = "投保单扩展集合")
    private List<ExtendForProVO> extendList;

    /**
     * 方案
     */
    @ApiModelProperty(value = "方案集合")
    private List<PlanVo> planList;

    /**
     * 承保公司
     */
    @ApiModelProperty(value = "承保公司")
    private List<InsuranceCompanyVO> insuranceCompanyVOS;

    /**
     * 保费计算因子
     */
    @ApiModelProperty(value = "发票信息")
    private List<PremiunFactorVo> premiunFactorVos;
    /**
     * 签单日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "签单日期")
    private Date issueDate;

    @ApiModelProperty(value = "产品分类1级")
    private String productCategory1;
    @ApiModelProperty(value = "产品分类2级")
    private String productCategory2;
    @ApiModelProperty(value = "产品分类3级")
    private String productCategory3;

    public String getOrderCode() {
        return orderCode;
    }

    public void setOrderCode(String orderCode) {
        this.orderCode = orderCode;
    }

    public String getAmout() {
        return amout;
    }

    public void setAmout(String amout) {
        this.amout = amout;
    }

    public String getCreateDate() {
        return createDate;
    }

    public void setCreateDate(String createDate) {
        this.createDate = createDate;
    }

    public String getOrderStatus() {
        return orderStatus;
    }

    public void setOrderStatus(String orderStatus) {
        this.orderStatus = orderStatus;
    }

    public String getSource() {
        return source;
    }

    public void setSource(String source) {
        this.source = source;
    }

    public String getApplicationFormCode() {
        return applicationFormCode;
    }

    public void setApplicationFormCode(String applicationFormCode) {
        this.applicationFormCode = applicationFormCode;
    }

    public String getProjectCode() {
        return projectCode;
    }

    public void setProjectCode(String projectCode) {
        this.projectCode = projectCode;
    }

    public String getProjectName() {
        return projectName;
    }

    public void setProjectName(String projectName) {
        this.projectName = projectName;
    }

    public String getProductCode() {
        return productCode;
    }

    public void setProductCode(String productCode) {
        this.productCode = productCode;
    }

    public String getProductName() {
        return productName;
    }

    public void setProductName(String productName) {
        this.productName = productName;
    }

    public Integer getInsuredCount() {
        return insuredCount;
    }

    public void setInsuredCount(Integer insuredCount) {
        this.insuredCount = insuredCount;
    }

    public String getIssueType() {
        return issueType;
    }

    public void setIssueType(String issueType) {
        this.issueType = issueType;
    }

    public String getChannelCode() {
        return channelCode;
    }

    public void setChannelCode(String channelCode) {
        this.channelCode = channelCode;
    }

    public String getChannelName() {
        return channelName;
    }

    public void setChannelName(String channelName) {
        this.channelName = channelName;
    }

    public String getBranchCode() {
        return branchCode;
    }

    public void setBranchCode(String branchCode) {
        this.branchCode = branchCode;
    }

    public String getBranchName() {
        return branchName;
    }

    public void setBranchName(String branchName) {
        this.branchName = branchName;
    }

    public String getRenewal() {
        return renewal;
    }

    public void setRenewal(String renewal) {
        this.renewal = renewal;
    }

    public Integer getRenewTimes() {
        return renewTimes;
    }

    public void setRenewTimes(Integer renewTimes) {
        this.renewTimes = renewTimes;
    }

    public String getRenewLastPolicyNo() {
        return renewLastPolicyNo;
    }

    public void setRenewLastPolicyNo(String renewLastPolicyNo) {
        this.renewLastPolicyNo = renewLastPolicyNo;
    }

    public String getApplicantStartDate() {
        return applicantStartDate;
    }

    public void setApplicantStartDate(String applicantStartDate) {
        this.applicantStartDate = applicantStartDate;
    }

    public String getApplicantEndDate() {
        return applicantEndDate;
    }

    public void setApplicantEndDate(String applicantEndDate) {
        this.applicantEndDate = applicantEndDate;
    }

    public String getStartDate() {
        return startDate;
    }

    public void setStartDate(String startDate) {
        this.startDate = startDate;
    }

    public String getEndDate() {
        return endDate;
    }

    public void setEndDate(String endDate) {
        this.endDate = endDate;
    }

    public String getApplicationStatus() {
        return applicationStatus;
    }

    public void setApplicationStatus(String applicationStatus) {
        this.applicationStatus = applicationStatus;
    }

    public String getFinanceStatus() {
        return financeStatus;
    }

    public void setFinanceStatus(String financeStatus) {
        this.financeStatus = financeStatus;
    }

    public String getIssueStatus() {
        return issueStatus;
    }

    public void setIssueStatus(String issueStatus) {
        this.issueStatus = issueStatus;
    }

    public String getPushStatus() {
        return pushStatus;
    }

    public void setPushStatus(String pushStatus) {
        this.pushStatus = pushStatus;
    }

    public String getPolicyKind() {
        return policyKind;
    }

    public void setPolicyKind(String policyKind) {
        this.policyKind = policyKind;
    }

    public String getPrem() {
        return prem;
    }

    public void setPrem(String prem) {
        this.prem = prem;
    }

    public String getReducePrem() {
        return reducePrem;
    }

    public void setReducePrem(String reducePrem) {
        this.reducePrem = reducePrem;
    }

    public String getBeforePrem() {
        return beforePrem;
    }

    public void setBeforePrem(String beforePrem) {
        this.beforePrem = beforePrem;
    }

    public String getAfterPrem() {
        return afterPrem;
    }

    public void setAfterPrem(String afterPrem) {
        this.afterPrem = afterPrem;
    }

    public String getPayDate() {
        return payDate;
    }

    public void setPayDate(String payDate) {
        this.payDate = payDate;
    }

    public String getActualPrem() {
        return actualPrem;
    }

    public void setActualPrem(String actualPrem) {
        this.actualPrem = actualPrem;
    }

    public String getProvinceName() {
        return provinceName;
    }

    public void setProvinceName(String provinceName) {
        this.provinceName = provinceName;
    }

    public String getCityName() {
        return cityName;
    }

    public void setCityName(String cityName) {
        this.cityName = cityName;
    }

    public String getCountyName() {
        return countyName;
    }

    public void setCountyName(String countyName) {
        this.countyName = countyName;
    }

    public String getPayType() {
        return payType;
    }

    public void setPayType(String payType) {
        this.payType = payType;
    }

    public String getApplicationType() {
        return applicationType;
    }

    public void setApplicationType(String applicationType) {
        this.applicationType = applicationType;
    }

    public String getChannelType() {
        return channelType;
    }

    public void setChannelType(String channelType) {
        this.channelType = channelType;
    }

    public String getCompensationRate() {
        return compensationRate;
    }

    public void setCompensationRate(String compensationRate) {
        this.compensationRate = compensationRate;
    }

    public String getPolicyNo() {
        return policyNo;
    }

    public void setPolicyNo(String policyNo) {
        this.policyNo = policyNo;
    }

    public Integer getQuantity() {
        return quantity;
    }

    public void setQuantity(Integer quantity) {
        this.quantity = quantity;
    }

    public String getPolicyStatus() {
        return policyStatus;
    }

    public void setPolicyStatus(String policyStatus) {
        this.policyStatus = policyStatus;
    }

    public List<PolicyAgentForProVO> getAgents() {
        return agents;
    }

    public void setAgents(List<PolicyAgentForProVO> agents) {
        this.agents = agents;
    }

    public HolderForProVO getHolder() {
        return holder;
    }

    public void setHolder(HolderForProVO holder) {
        this.holder = holder;
    }

    public List<InsuredForProVO> getInsuredList() {
        return insuredList;
    }

    public void setInsuredList(List<InsuredForProVO> insuredList) {
        this.insuredList = insuredList;
    }

    public List<Map<String, Object>> getRiskList() {
        return riskList;
    }

    public void setRiskList(List<Map<String, Object>> riskList) {
        this.riskList = riskList;
    }

    public String getFormulas() {
        return formulas;
    }

    public void setFormulas(String formulas) {
        this.formulas = formulas;
    }

    public List<AttachmentForProVO> getAppAttachmentList() {
        return appAttachmentList;
    }

    public void setAppAttachmentList(List<AttachmentForProVO> appAttachmentList) {
        this.appAttachmentList = appAttachmentList;
    }

    public List<ApplicationFormInvoiceVo> getApplicationFormInvoiceVos() {
        return ApplicationFormInvoiceVos;
    }

    public void setApplicationFormInvoiceVos(List<ApplicationFormInvoiceVo> applicationFormInvoiceVos) {
        ApplicationFormInvoiceVos = applicationFormInvoiceVos;
    }

    public List<PolAttachmentProVO> getPolAttachmentList() {
        return polAttachmentList;
    }

    public void setPolAttachmentList(List<PolAttachmentProVO> polAttachmentList) {
        this.polAttachmentList = polAttachmentList;
    }

    public List<ExtendForProVO> getExtendList() {
        return extendList;
    }

    public void setExtendList(List<ExtendForProVO> extendList) {
        this.extendList = extendList;
    }

    public List<PlanVo> getPlanList() {
        return planList;
    }

    public void setPlanList(List<PlanVo> planList) {
        this.planList = planList;
    }

    public List<InsuranceCompanyVO> getInsuranceCompanyVOS() {
        return insuranceCompanyVOS;
    }

    public void setInsuranceCompanyVOS(List<InsuranceCompanyVO> insuranceCompanyVOS) {
        this.insuranceCompanyVOS = insuranceCompanyVOS;
    }

    public List<PremiunFactorVo> getPremiunFactorVos() {
        return premiunFactorVos;
    }

    public void setPremiunFactorVos(List<PremiunFactorVo> premiunFactorVos) {
        this.premiunFactorVos = premiunFactorVos;
    }

    public Date getIssueDate() {
        return issueDate;
    }

    public void setIssueDate(Date issueDate) {
        this.issueDate = issueDate;
    }

    public String getProductCategory1() {
        return productCategory1;
    }

    public void setProductCategory1(String productCategory1) {
        this.productCategory1 = productCategory1;
    }

    public String getProductCategory2() {
        return productCategory2;
    }

    public void setProductCategory2(String productCategory2) {
        this.productCategory2 = productCategory2;
    }

    public String getProductCategory3() {
        return productCategory3;
    }

    public void setProductCategory3(String productCategory3) {
        this.productCategory3 = productCategory3;
    }
}
